home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1989 …il & Dave's Excellent CD / Excellent CD HFS.raw / Moof / Goodies / MPW Goodies / Interfaces / PInterfaces / TextEdit.p < prev    next >
Encoding:
Text File  |  1988-11-30  |  8.4 KB  |  270 lines  |  [TEXT/MPS ]

  1. {
  2. Created: Tuesday, August 2, 1988 at 10:59 AM
  3.     TextEdit.p
  4.     Pascal Interface to the Macintosh Libraries
  5.  
  6.     Copyright Apple Computer, Inc.  1985-1988
  7.     All rights reserved
  8. }
  9.  
  10.  
  11. {$IFC UNDEFINED UsingIncludes}
  12. {$SETC UsingIncludes := 0}
  13. {$ENDC}
  14.  
  15. {$IFC NOT UsingIncludes}
  16.     UNIT TextEdit;
  17.     INTERFACE
  18. {$ENDC}
  19.  
  20. {$IFC UNDEFINED UsingTextEdit}
  21. {$SETC UsingTextEdit := 1}
  22.  
  23. {$I+}
  24. {$SETC TextEditIncludes := UsingIncludes}
  25. {$SETC UsingIncludes := 1}
  26. {$IFC UNDEFINED UsingQuickdraw}
  27. {$I $$Shell(PInterfaces)Quickdraw.p}
  28. {$ENDC}
  29. {$SETC UsingIncludes := TextEditIncludes}
  30.  
  31. CONST
  32. teJustLeft = 0;
  33. teJustCenter = 1;
  34. teJustRight = -1;
  35. teForceLeft = -2;
  36. doFont = 1;                             { set font (family) number}
  37. doFace = 2;                             {set character style}
  38. doSize = 4;                             {set type size}
  39. doColor = 8;                            {set color}
  40. doAll = 15;                             {set all attributes}
  41. addSize = 16;                           {adjust type size}
  42. doToggle = 32;                          {toggle mode for TESetStyle & TEContinuousStyle}
  43. intEOLHook = 0;                         {TEIntHook value}
  44. intDrawHook = 1;                        {TEIntHook value}
  45. intWidthHook = 2;                       {TEIntHook value}
  46. intHitTestHook = 3;                     {TEIntHook value}
  47.  
  48.  
  49. TYPE
  50.  
  51. TEPtr = ^TERec;
  52. TEHandle = ^TEPtr;
  53. TERec = RECORD
  54.     destRect: Rect;
  55.     viewRect: Rect;
  56.     selRect: Rect;
  57.     lineHeight: INTEGER;
  58.     fontAscent: INTEGER;
  59.     selPoint: Point;
  60.     selStart: INTEGER;
  61.     selEnd: INTEGER;
  62.     active: INTEGER;
  63.     wordBreak: ProcPtr;
  64.     clikLoop: ProcPtr;
  65.     clickTime: LONGINT;
  66.     clickLoc: INTEGER;
  67.     caretTime: LONGINT;
  68.     caretState: INTEGER;
  69.     just: INTEGER;
  70.     teLength: INTEGER;
  71.     hText: Handle;
  72.     recalBack: INTEGER;
  73.     recalLines: INTEGER;
  74.     clikStuff: INTEGER;
  75.     crOnly: INTEGER;
  76.     txFont: INTEGER;
  77.     txFace: Style;                      {txFace is unpacked byte}
  78.     txMode: INTEGER;
  79.     txSize: INTEGER;
  80.     inPort: GrafPtr;
  81.     highHook: ProcPtr;
  82.     caretHook: ProcPtr;
  83.     nLines: INTEGER;
  84.     lineStarts: ARRAY [0..16000] OF INTEGER;
  85.     END;
  86.  
  87. CharsPtr = ^Chars;
  88. CharsHandle = ^CharsPtr;
  89.  
  90. Chars = PACKED ARRAY [0..32000] OF CHAR;
  91.  
  92. StyleRun = RECORD
  93.     startChar: INTEGER;                 {starting character position}
  94.     styleIndex: INTEGER;                {index in style table}
  95.     END;
  96.  
  97. STElement = RECORD
  98.     stCount: INTEGER;                   {number of runs in this style}
  99.     stHeight: INTEGER;                  {line height}
  100.     stAscent: INTEGER;                  {font ascent}
  101.     stFont: INTEGER;                    {font (family) number}
  102.     stFace: Style;                      {character Style}
  103.     stSize: INTEGER;                    {size in points}
  104.     stColor: RGBColor;                  {absolute (RGB) color}
  105.     END;
  106.  
  107. STPtr = ^TEStyleTable;
  108. STHandle = ^STPtr;
  109.  
  110. TEStyleTable = ARRAY [0..1776] OF STElement;
  111.  
  112. LHElement = RECORD
  113.     lhHeight: INTEGER;                  {maximum height in line}
  114.     lhAscent: INTEGER;                  {maximum ascent in line}
  115.     END;
  116.  
  117. LHPtr = ^LHTable;
  118. LHHandle = ^LHPtr;
  119.  
  120. LHTable = ARRAY [0..8000] OF LHElement;
  121.  
  122. ScrpSTElement = RECORD
  123.     scrpStartChar: LONGINT;             {offset to start of style}
  124.     scrpHeight: INTEGER;                {line height}
  125.     scrpAscent: INTEGER;                {font ascent}
  126.     scrpFont: INTEGER;                  {font (family) number}
  127.     scrpFace: Style;                    {character style}
  128.     scrpSize: INTEGER;                  {size in points}
  129.     scrpColor: RGBColor;                {absolute (RGB) color}
  130.     END;
  131.  
  132. ScrpSTTable = ARRAY[0..1600] OF ScrpSTElement;
  133.  
  134. StScrpPtr = ^StScrpRec;
  135. StScrpHandle = ^StScrpPtr;
  136. StScrpRec = RECORD
  137.     scrpNStyles: INTEGER;               {number of styles in scrap}
  138.     scrpStyleTab: ScrpSTTable;          {table of styles for scrap}
  139.     END;
  140.  
  141. NullStPtr = ^NullStRec;
  142. NullStHandle = ^NullStPtr;
  143. NullStRec = RECORD
  144.     teReserved: LONGINT;                {reserved for future expansion}
  145.     nullScrap: StScrpHandle;            {handle to scrap style table}
  146.     END;
  147.  
  148. TEStylePtr = ^TEStyleRec;
  149. TEStyleHandle = ^TEStylePtr;
  150. TEStyleRec = RECORD
  151.     nRuns: INTEGER;                     {number of style runs}
  152.     nStyles: INTEGER;                   {size of style table}
  153.     styleTab: STHandle;                 {handle to style table}
  154.     lhTab: LHHandle;                    {handle to line-height table}
  155.     teRefCon: LONGINT;                  {reserved for application use}
  156.     nullStyle: NullStHandle;            {Handle to style set at null selection}
  157.     runs: ARRAY [0..8000] OF StyleRun;  {ARRAY [0..8000] OF StyleRun}
  158.     END;
  159.  
  160. TextStyle = RECORD
  161.     tsFont: INTEGER;                    {font (family) number}
  162.     tsFace: Style;                      {character Style}
  163.     tsSize: INTEGER;                    {size in point}
  164.     tsColor: RGBColor;                  {absolute (RGB) color}
  165.     END;
  166.  
  167. TEIntHook = INTEGER;
  168.  
  169.  
  170.  
  171. PROCEDURE TEInit;
  172.     INLINE $A9CC;
  173. FUNCTION TENew(destRect: Rect;viewRect: Rect): TEHandle;
  174.     INLINE $A9D2;
  175. PROCEDURE TEDispose(hTE: TEHandle);
  176.     INLINE $A9CD;
  177. PROCEDURE TESetText(text: Ptr;length: LONGINT;hTE: TEHandle);
  178.     INLINE $A9CF;
  179. FUNCTION TEGetText(hTE: TEHandle): CharsHandle;
  180.     INLINE $A9CB;
  181. PROCEDURE TEIdle(hTE: TEHandle);
  182.     INLINE $A9DA;
  183. PROCEDURE TESetSelect(selStart: LONGINT;selEnd: LONGINT;hTE: TEHandle);
  184.     INLINE $A9D1;
  185. PROCEDURE TEActivate(hTE: TEHandle);
  186.     INLINE $A9D8;
  187. PROCEDURE TEDeactivate(hTE: TEHandle);
  188.     INLINE $A9D9;
  189. PROCEDURE TEKey(key: CHAR;hTE: TEHandle);
  190.     INLINE $A9DC;
  191. PROCEDURE TECut(hTE: TEHandle);
  192.     INLINE $A9D6;
  193. PROCEDURE TECopy(hTE: TEHandle);
  194.     INLINE $A9D5;
  195. PROCEDURE TEPaste(hTE: TEHandle);
  196.     INLINE $A9DB;
  197. PROCEDURE TEDelete(hTE: TEHandle);
  198.     INLINE $A9D7;
  199. PROCEDURE TEInsert(text: Ptr;length: LONGINT;hTE: TEHandle);
  200.     INLINE $A9DE;
  201. PROCEDURE TESetJust(just: INTEGER;hTE: TEHandle);
  202.     INLINE $A9DF;
  203. PROCEDURE TEUpdate(rUpdate: Rect;hTE: TEHandle);
  204.     INLINE $A9D3;
  205. PROCEDURE TextBox(text: Ptr;length: LONGINT;box: Rect;just: INTEGER);
  206.     INLINE $A9CE;
  207. PROCEDURE TEScroll(dh: INTEGER;dv: INTEGER;hTE: TEHandle);
  208.     INLINE $A9DD;
  209. PROCEDURE TESelView(hTE: TEHandle);
  210.     INLINE $A811;
  211. PROCEDURE TEPinScroll(dh: INTEGER;dv: INTEGER;hTE: TEHandle);
  212.     INLINE $A812;
  213. PROCEDURE TEAutoView(fAuto: BOOLEAN;hTE: TEHandle);
  214.     INLINE $A813;
  215. FUNCTION TEScrapHandle: Handle;
  216.     INLINE $2EB8,$0AB4;
  217. PROCEDURE TECalText(hTE: TEHandle);
  218.     INLINE $A9D0;
  219. FUNCTION TEGetOffset(pt: Point;hTE: TEHandle): INTEGER;
  220.     INLINE $A83C;
  221. FUNCTION TEGetPoint(offset: INTEGER;hTE: TEHandle): Point;
  222.     INLINE $3F3C,$0008,$A83D;
  223. PROCEDURE TEClick(pt: Point;fExtend: BOOLEAN;h: TEHandle);
  224.     INLINE $A9D4;
  225. FUNCTION TEStylNew(destRect: Rect;viewRect: Rect): TEHandle;
  226.     INLINE $A83E;
  227. PROCEDURE SetStylHandle(theHandle: TEStyleHandle;hTE: TEHandle);
  228.     INLINE $3F3C,$0005,$A83D;
  229. FUNCTION GetStylHandle(hTE: TEHandle): TEStyleHandle;
  230.     INLINE $3F3C,$0004,$A83D;
  231. PROCEDURE TEGetStyle(offset: INTEGER;VAR theStyle: TextStyle;VAR lineHeight: INTEGER;
  232.     VAR fontAscent: INTEGER;hTE: TEHandle);
  233.     INLINE $3F3C,$0003,$A83D;
  234. PROCEDURE TEStylPaste(hTE: TEHandle);
  235.     INLINE $3F3C,$0000,$A83D;
  236. PROCEDURE TESetStyle(mode: INTEGER;newStyle: TextStyle;redraw: BOOLEAN;
  237.     hTE: TEHandle);
  238.     INLINE $3F3C,$0001,$A83D;
  239. PROCEDURE TEReplaceStyle(mode: INTEGER;oldStyle: TextStyle;newStyle: TextStyle;
  240.     redraw: BOOLEAN;hTE: TEHandle);
  241.     INLINE $3F3C,$0002,$A83D;
  242. FUNCTION GetStylScrap(hTE: TEHandle): StScrpHandle;
  243.     INLINE $3F3C,$0006,$A83D;
  244. PROCEDURE TEStylInsert(text: Ptr;length: LONGINT;hST: StScrpHandle;hTE: TEHandle);
  245.     INLINE $3F3C,$0007,$A83D;
  246. FUNCTION TEGetHeight(endLine: LONGINT;startLine: LONGINT;hTE: TEHandle): LONGINT;
  247.     INLINE $3F3C,$0009,$A83D;
  248. FUNCTION TEContinuousStyle(VAR mode: INTEGER;VAR aStyle: TextStyle;hTE: TEHandle): BOOLEAN;
  249.     INLINE $3F3C,$000A,$A83D;
  250. PROCEDURE SetStylScrap(rangeStart: LONGINT;rangeEnd: LONGINT;newStyles: StScrpHandle;
  251.     redraw: BOOLEAN;hTE: TEHandle);
  252.     INLINE $3F3C,$000B,$A83D;
  253. PROCEDURE TECustomHook(which: TEIntHook;VAR addr: ProcPtr;hTE: TEHandle);
  254.     INLINE $3F3C,$000C,$A83D;
  255. FUNCTION TENumStyles(rangeStart: LONGINT;rangeEnd: LONGINT;hTE: TEHandle): LONGINT;
  256.     INLINE $3F3C,$000D,$A83D;
  257. FUNCTION TEGetScrapLen: LONGINT;
  258. PROCEDURE TESetScrapLen(length: LONGINT);
  259. FUNCTION TEFromScrap: OSErr;
  260. FUNCTION TEToScrap: OSErr;
  261. PROCEDURE SetClikLoop(clikProc: ProcPtr;hTE: TEHandle);
  262. PROCEDURE SetWordBreak(wBrkProc: ProcPtr;hTE: TEHandle);
  263.  
  264. {$ENDC}    { UsingTextEdit }
  265.  
  266. {$IFC NOT UsingIncludes}
  267.     END.
  268. {$ENDC}
  269.  
  270.